
package com.waitingsnow.common.share.qqMicroBlog.api
{
	import com.waitingsnow.common.share.qqMicroBlog.operation.IRequestOperation;
	
	/**
	 * 微群相关
	 * @langversion 3.0
	 * @playerversion Flash 9
	 * @playerversion AIR 1.1
	 *
	 */
	public class WeiQun extends AbstractAPI
	{
		/**
		 * 1.在微群中发表微博消息
		 * @param groupid 微群的id
		 * @param content 微博内容
		 * @param clientip 用户ip(以分析用户所在地)
		 * @param jing 经度（可以填空）
		 * @param wei 纬度（可以填空）
		 * @param flag 1-表示将消息发表到分享区，2-表示发表到灌水区
		 * @param issue 发表类型，0-表示只在群内发表，1-表示同时还发表到用户微博
		 * @return IRequestOperation实例
		 */
		public function add(groupid:String,content:String,clientip:String="127.0.0.1",jing:String="",wei:String="",flag:int=1,issue:int=0):IRequestOperation
		{
			checkAccessToken();
			var url:String = config.urlBase+"weiqun/add";
			var attachParms:Object = {};
			attachParms.groupid = groupid;
			attachParms.content = content;
			attachParms.clientip = clientip;
			attachParms.jing = jing;
			attachParms.wei = wei;
			attachParms.flag = flag;
			attachParms.issue = issue;
			return generateDataRequest(url,attachParms,"POST");
		}
		/**
		 * 2.申请加入微群
		 * @param groupid 申请加入的微群id
		 * @param names 表示一个或多个被邀请用户的微博账号列表，多个names之间使用逗号“,”分隔，如123456,456789（可选，当群管理员邀请用户加入时使用）
		 * @param fopenids 表示一个或多个被邀请用户的openid列表，多个fopenids之间使用下划线“_”分隔，如123456_456789（可选，当群管理员邀请用户加入时使用) 当群管理员邀请用户加入时，names和fopenids至少选一个，若同时存在则以names值为主
		 * @param reason 指定了用户的申请理由（可选，当用户申请加入微群时使用）
		 * @return IRequestOperation实例
		 */
		public function applyForGroup(groupid:String,names:String=null,fopenids:String=null,reason:String=null):IRequestOperation
		{
			checkAccessToken();
			var url:String = config.urlBase+"weiqun/apply4group";
			var attachParms:Object = {};
			attachParms.groupid = groupid;
			if(names != null)
				attachParms.names = names;
			if(fopenids != null)
				attachParms.fopenids = fopenids;
			if(reason != null)
				attachParms.reason = reason;
			return generateDataRequest(url,attachParms,"POST");
		}
		/**
		 * 3.微群与Q群互绑定
		 * @param id 绑定到的一个微群或QQ群的id
		 * @param ids 被绑定的多个QQ群或微群的id列表，群号之间使用逗号","分隔如，123,456（1-100个）
		 * @param type 绑定操作类型，1-表示将多个微群绑定到一个QQ群，2-表示多个QQ群绑定到一个微群
		 * @param isbind 是否为绑定操作，非0-表示进行绑定，0-表示解除绑定
		 * @return IRequestOperation实例
		 */
		public function bindQQGroup(id:String,ids:String,type:int=1,isbind:int=1):IRequestOperation
		{
			checkAccessToken();
			var url:String = config.urlBase+"weiqun/bindqqgroup";
			var attachParms:Object = {};
			attachParms.type = type;
			attachParms.isbind = isbind;
			attachParms.id = id;
			attachParms.ids = ids;
			return generateDataRequest(url,attachParms,"POST");
		}
		/**
		 * 4.删除微群中的微博
		 * @param ids 需要删除的微博消息id列表，多个id之间使用逗号分隔，如123456,456789
		 * @param groupid 指定待删除的微博消息所在的微群id
		 * @param zoneid 区域表示，1-表示公开区，2-表示私聊区
		 * @return IRequestOperation实例
		 */
		public function del(ids:String,groupid:String,zoneid:int=1):IRequestOperation
		{
			checkAccessToken();
			var url:String = config.urlBase+"weiqun/del";
			var attachParms:Object = {};
			attachParms.ids = ids;
			attachParms.groupid = groupid;
			attachParms.zoneid = zoneid;
			return generateDataRequest(url,attachParms,"POST");
		}
		/**
		 * 5.微群主页时间线
		 * @param pageflag 分页标识（0：第一页，1：向下翻页，2：向上翻页）
		 * @param pagetime 本页起始时间（第一页：填0，向上翻页：填上一次请求返回的第一条记录时间，向下翻页：填上一次请求返回的最后一条记录时间）
		 * @param reqnum 每次请求记录的条数（1-70条）
		 * @param lastid 上次查询的最后一个微博ID
		 * @param type 拉取类型 0x1 原创发表 0x2 转载 0x8 回复 0x10 空回 0x20 提及 0x40 点评 如需拉取多个类型请使用|，如(0x1|0x2)得到3，此时type=3即可，填零表示拉取所有类型
		 * @param contenttype 正文类型（按位使用）。1-带文本(这一位一定有)，2-带链接，4-带图片，8-带视频，0x10-带音频
		 * @return IRequestOperation实例
		 */
		public function homeTimeline(pageflag:int=0, pagetime:int=0, reqnum:int=20,lastid:String="0", type:int=0, contenttype:int=0):IRequestOperation
		{
			checkAccessToken();
			var url:String = config.urlBase+"weiqun/home_timeline";
			var attachParms:Object = {};
			attachParms.pageflag = pageflag;
			attachParms.pagetime = pagetime;
			attachParms.reqnum = reqnum;
			attachParms.lastid = lastid;
			attachParms.type = type;
			attachParms.contenttype = contenttype;
			return generateDataRequest(url,attachParms,config.requestMethod);
		}
		/**
		 * 6.多微群主页时间线
		 * @param ids 需要拉取主页微博消息的微群id列表，多个微群ID之间使用逗号“,”分隔，如123,456
		 * @param zoneid 区域标识符。1-表示共享区，2-表示灌水区
		 * @param pageflag 分页标识（0：第一页，1：向下翻页，2：向上翻页）
		 * @param pagetime 本页起始时间（第一页：填0，向上翻页：填上一次请求返回的第一条记录时间，向下翻页：填上一次请求返回的最后一条记录时间）
		 * @param reqnum 每次请求记录的条数（1-70条）
		 * @param lastid 上次查询的最后一个微博id
		 * @param type 拉取类型 0x1 原创发表 0x2 转载 0x8 回复 0x10 空回 0x20 提及 0x40 点评 , 如需拉取多个类型请使用|，如(0x1|0x2)得到3，此时type=3即可，填零表示拉取所有类型
		 * @param contenttype 内容过滤。0-表示所有类型，1-带文本，2-带链接，4-带图片，8-带视频，0x10-带音频
		 * @return IRequestOperation实例
		 */
		public function multiHomeTimeline(ids:String,zoneid:int=1,pageflag:int=0, pagetime:int=0, reqnum:int=20,lastid:String="0", type:int=0, contenttype:int=0):IRequestOperation
		{
			checkAccessToken();
			var url:String = config.urlBase+"weiqun/multihome_timeline";
			var attachParms:Object = {};
			attachParms.ids = ids;
			attachParms.zoneid = zoneid;
			attachParms.pageflag = pageflag;
			attachParms.pagetime = pagetime;
			attachParms.reqnum = reqnum;
			attachParms.lastid = lastid;
			attachParms.type = type;
			attachParms.contenttype = contenttype;
			return generateDataRequest(url,attachParms,config.requestMethod);
		}
		/**
		 * 7.退出微群
		 * @param groupid 指定所要退出的微群id
		 * @param names 当群主踢人时，names指定了被踢出群的微博用户的账号，用逗号“,”分隔，如123456,456789（可选，最多不超过10个，当群内用户自己退出微群时不需要填写该参数的值）
		 * @param fopenids  当群主踢人时，fopenids指定了被踢出群的微博用户的openid，用逗号“_”分隔，如123456_456789（可选，最多不超过10个，当群内用户自己退出微群时不需要填写该参数的值）。当群主踢人时，names和fopenids至少选一个，若同时存在则以names值为主
		 * @return IRequestOperation实例
		 */
		public function quitGroup(groupid:String,names:String=null,fopenids:String=null):IRequestOperation
		{
			checkAccessToken();
			var url:String = config.urlBase+"weiqun/quitgroup";
			var attachParms:Object = {};
			attachParms.groupid = groupid;
			if(names != null)
				attachParms.names = names;
			if(fopenids != null)
				attachParms.fopenids = fopenids;
			return generateDataRequest(url,attachParms,"POST");
		}
		/**
		 * 8.设置微群公告
		 * @param id 指定设定公告的微群id
		 * @param content 群公告的内容
		 * @return IRequestOperation实例
		 */
		public function setBulletin(id:String,content:String):IRequestOperation
		{
			checkAccessToken();
			var url:String = config.urlBase+"weiqun/setbulletin";
			var attachParms:Object = {};
			attachParms.id = id;
			attachParms.content = content;
			return generateDataRequest(url,attachParms,"POST");
		}
		/**
		 * 9.设置微群成员属性
		 * @param groupid
		 * @param memuin
		 * @param optype
		 * @param attrflag
		 * @return IRequestOperation实例
		 */
		public function setMemAttr(groupid:String,memuin:String,optype:int=1,attrflag:int=1):IRequestOperation
		{
			checkAccessToken();
			var url:String = config.urlBase+"weiqun/setmemattr";
			var attachParms:Object = {};
			attachParms.groupid = groupid;
			attachParms.memuin = memuin;
			attachParms.optype = optype;
			attachParms.attrflag = attrflag;
			return generateDataRequest(url,attachParms,"POST");
		}
	}
}